<?php

use Illuminate\Support\Facades\Route;

Route::group(['middleware' => 'guest:web'], function () {

    // 注册
    Route::get('register')
        ->uses('RegisterController@showRegister')
        ->name('auth.register');

    Route::post('register')
        ->middleware('mobile-verify')
        ->uses('RegisterController@register');

    // 登录
    Route::group(['prefix' => 'login'], function () {

        // 短信登录
        Route::get('sms')
            ->uses('LoginController@showSmsLogin')
            ->name('auth.login.sms-login');

        Route::post('sms')
            ->middleware('mobile-verify')
            ->uses('LoginController@smsLogin');

        // 密码登录和第三方登录
        Route::get('/{socialite?}')
            ->uses('LoginController@showLogin')
            ->name('auth.login');

        Route::post('/')
            ->uses('LoginController@login');
    });


    // 忘记密码
    Route::group(['prefix' => 'reset-password'], function () {

        // 重置密码: 使用邮箱
        Route::get('/')
            ->uses('ResetPasswordController@showEmailReset')
            ->name('auth.reset-password');

        // 重置密码: 发送链接
        Route::post('/')
            ->uses('ResetPasswordsController@sendLink');

        // 重置密码: 使用短信
        Route::get('/sms')
            ->uses('ResetPasswordController@showSmsReset')
            ->name('auth.reset-password.sms-reset');

        Route::post('/sms')
            ->middleware('mobile-verify')
            ->uses('ResetPasswordController@smsReset');

        // 重置密码: 使用邮箱 - 填写密码
        Route::get('reset/{token}')
            ->uses('ResetPasswordController@showReset')
            ->name('auth.reset-password.reset');

        Route::post('reset/{token}')
            ->uses('ResetPasswordController@emailReset');
    });
});

/**
 * 退出登录, 包括第三方账号的登录状态
 * 所以不能有auth和guest中间件
 */
Route::match(['get', 'post'], 'logout')
    ->uses('LogoutController@logout')
    ->name('auth.logout');


/**
 * 第三方登录回调, 登录和绑定账号共用一个回调接口
 * 所以不能有auth和guest中间件
 *
 */
Route::get('login/callback/{type}')
    ->uses('LoginController@callback')
    ->name('auth.login.callback');



